package com.jumper.property.comparer.core.annotations;

import com.jumper.property.comparer.core.constant.DiffConstant;

import java.lang.annotation.*;

/**
 * 一个需要对比差异的标识
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DiffKey {

    /**
     * 属性值名称, 不填则默认取字段属性名称
     */
    String name() default "";

    /**
     * 是否是组合属性
     */
    int type() default DiffConstant.NORMAL_PROPERTY;

    /**
     * 属性分组名称 combination = ture 时需设置, 组名相同是合并输出
     */
    String combinationName() default "";

    /**
     * 如果是Collection类型字段，可以设置泛型类型
     */
    Class<?> subCls() default Void.class;

    /**
     * 当数据是列表时，是否默认显示所有字段，如果是否，则只读取UnionKey
     */
    boolean whenArrayFullProperties() default true;

}
